program ficherosOrdenados (Uno, Dos, Auxiliar, Output);

type
	Datos = record
				Apellido: String;
				Nombre: String;
				Telefono: String;
			end;
	FicheroDatos = file of Datos;

var
	Uno, Dos, Auxiliar: FicheroDatos;

procedure CopiarResto(var Uno,Dos,Auxiliar: FicheroDatos; DatosUno,DatosDos: Datos);

	begin
		writeln('copiar resto');
			While DatosUno.Apellido <> 'Zz' Do
			begin
				Write(Auxiliar,DatosUno);
				Read(Uno, DatosUno);
			end;
		While DatosDos.Apellido <> 'Zz' Do
			begin
				Write(Auxiliar,DatosDos);
				Read(Dos, DatosDos);
			end;

	end;

procedure Mezclar(var Uno,Dos,Auxiliar: FicheroDatos);
	var
		DatosUno, DatosDos: Datos;
	begin
		writeln('Leemos Uno');
		read(Uno, DatosUno);

		writeln('Leemos dos');
		read(Dos, DatosDos);

		writeln('vamos al bucle', DatosUno.Apellido);
		while (DatosUno.Apellido <> 'Zz') and (DatosDos.Apellido <> 'Zz') do
			begin
				if DatosUno.Apellido < DatosDos.Apellido then
					begin
						writeln('menor', DatosUno.Apellido, DatosDos.Apellido);
						Write(Auxiliar,DatosUno);
						writeln('read uno menor');
						Read(Uno, DatosUno);
					end
				else if DatosUno.Apellido > DatosDos.Apellido then
					begin
						writeln('mayor', DatosUno.Apellido, DatosDos.Apellido);
						Write(Auxiliar,DatosDos);
						writeln('read dos mayor');
						Read(Dos,DatosDos);
					end
				else
					begin
						writeln('nanai', DatosUno.Apellido, DatosDos.Apellido);
						Write(Auxiliar,DatosUno);

						writeln('read uno nanai');
						Read(Uno,DatosUno);

						writeln('read dos nanai');
						Read(Dos,DatosDos);
					end
			end;
		CopiarResto(Uno,Dos,Auxiliar,DatosUno,DatosDos);
	end;

begin


	assign(Uno,'c:\temp\datosUno.dat');
	assign(Dos,'c:\temp\datosDos.dat');
	assign(Auxiliar, 'c:\temp\fichero.dat');


writeln('reseteamos');
	reset(Uno);
	reset(Dos);

writeln('rewrite de auxiliar');
	rewrite(Auxiliar);

writeln('asignamos');
	Mezclar(Uno,Dos,Auxiliar);

	close(Uno);
	close(Dos);
	close(Auxiliar);

	readln();
end.
